let layer = layui.layer;
$(() => {
    // 点击全选和取消全选
    $("#check-all").click(function () {
        let checked = $(this).prop("checked");
        $(".shopping-summery>tbody>tr>:first-child>:checkbox").prop("checked", checked);
        showFinalPrice();
    })
//     选中单行也计算总价
    $(".shopping-summery>tbody>tr>:first-child>:checkbox").click(function () {
        showFinalPrice();
    })

// 库存增加减少，同步数据库
    $(".qty-down,.qty-up").click(function () {
        let qtyVal = $(this).parent().find(".qty-val").text();//库存数量
        let $tr = $(this).closest("tr");//每次点击按钮的父辈元素tr
        let goodsId = $tr.data("goods-id");//取出商品编号

        // 节流
        if (window.task) {
            clearTimeout(window.task);//清除定时任务
        }
        window.task = setTimeout(function () { //创建定时任务
            // 修改后的值更新到数据库中
            const url = ctx + "/front/api/v1/shop/cart";
            $.ajax({
                url,
                method: "patch",
                data: {
                    goodsId,
                    quantity: parseInt(qtyVal)
                },
                success(resp) {
                    if (resp.success) {
                        layer.msg(resp.message || "更改购物车商品数量成功");
                        // 页面数据变化
                        let itemPrice = $tr.find(".item_price").text();
                        if (itemPrice.startsWith("$")) {
                            itemPrice = itemPrice.substring(1);
                        }
                        let $itemTotalPrice = $tr.find(".item_total_price");
                        $itemTotalPrice.text('$' + parseInt(qtyVal) * parseFloat(itemPrice));
                        showFinalPrice();
                    } else {
                        layer.msg(resp.message || "更改购物车商品数量失败");
                    }
                }, error(resp) {
                    if (resp.status === 401) {
                        layer.msg("账号状态为空,需要登录", {
                            icon: 0, // 图标类型，0 表示警告图标
                            time: 1000,
                            end: function () {
                                // 消息提示框关闭后执行的回调函数
                                location.href = ctx + "/vm/front/login";
                            }
                        });
                    }
                    layer.msg("更改购物车商品数量异常");
                }
            })

        }, 500)


    })


//     删除购物车项
    $("[data-title=remove]>a").click(function (e){
        e.preventDefault();
        let $tr = $(this).closest("tr");

        deleteByIds([$tr.data("cid")],$tr);
    })

//     清除选中购物项按钮
    $("[data-title=remove-check]").click(function (e){
        e.preventDefault();
        // 获取所有选中的复选框的tr
        let $tr= $(".shopping-summery>tbody>tr>:first-child>:checked").closest("tr");
        let ids=[];//选中的项
        $tr.each(function () {
            ids.push($(this).data("cid"));
        });
        if (ids.length === 0) {
            layer.msg("请选中您要删除的商品项")
        } else {
            layer.confirm("是否确认删除选中的商品项?", function (index) {
                deleteByIds(ids, $tr);
                layer.close(index);
            })
        }
    })


    //提交选中的购物信息，创建订单
    $("#checkout-btn").click(function (e) {
        e.preventDefault();//阻止超链接默认行为
        let ids = [];
        // 选中行的父元素tr
        let $tr = $(".shopping-summery>tbody>tr>:first-child>:checked").closest("tr");
        $tr.each(function () {
            ids.push($(this).data("cid"));
        });

        if (ids.length === 0) {
            layer.msg("请选中您要提交的购物项");
            return;
        }

        //向后台提交
        const url = ctx + "/front/api/v1/shop/checkout";
        $.ajax({
            url,
            method: "post",
            data: {
                ids
            },
            traditional: true,
            success(resp) {
                if (resp.success) {
                    layer.msg("创建订单成功，现为您跳转至结算页", {
                        icon: 1, // 图标类型
                        time: 1000,
                        end: function () {
                            // 消息提示框关闭后执行的回调函数
                            location.href = ctx + "/vm/front/shop/checkout?id=" + resp.data;//跳转到结算页
                        }
                    });
                } else {
                    layer.msg(resp.msg || "创建订单失败");
                }
            },
            error(resp) {
                if (resp.status === 401) {
                    layer.msg("账号状态为空,需要登录", {
                        icon: 0, // 图标类型，0 表示警告图标
                        time: 1000,
                        end: function () {
                            // 消息提示框关闭后执行的回调函数
                            location.href = ctx + "/vm/front/login";
                        }
                    });
                }else{
                    layer.msg( "创建订单异常");
                }
            }
        });
    });
})

// 展示选中的商品的总价
function showFinalPrice() {
    // jquery里的，获取选中项
    let $checked = $(".shopping-summery>tbody>tr>:first-child>:checked");
    let totalPrice = 0;
    $checked.each(function () {
        let $itp = $(this).closest("tr").find(".item_total_price");//每项的总价
        let itp = $itp.text();
        if (itp.startsWith("$")) {
            itp = itp.substring(1);
        }
        totalPrice += parseFloat(itp);
    })
    $(".cart_total_price span").text('$' + totalPrice);
}

//删除购物车项
function deleteByIds(ids,$tr){
    const url = ctx+"/front/api/v1/shop/cart";
    $.ajax({
        url,
        method: "delete",
        data:{
            ids
        },
        traditional:true,
        success(resp) {
            if(resp.success){
                layer.msg(resp.msg || "删除成功，共删除" + resp.data + "条数据");
                $tr.remove();
                showFinalPrice();
            }else{
                layer.msg(resp.msg||"删除购物车项失败")
            }
        },error(resp) {
            if (resp.status === 401) {
                layer.msg("账号状态为空,需要登录", {
                    icon: 0, // 图标类型，0 表示警告图标
                    time: 1000,
                    end: function () {
                        // 消息提示框关闭后执行的回调函数
                        location.href = ctx + "/vm/front/login";
                    }
                });
            }
            layer.msg("删除购物车项异常");
        }

    })
}
